from django.db.models import Count
from django.http import HttpResponse
from django.shortcuts import render

from userapp.model_ddd.models import IdCard, RoleModel
from userapp.model_two.models import DeptModel, Employee, EmpChoices, SexChoices


# Create your views here.
def test01(request):
    # 查询所有的员工
    emps = Employee.objects.all()
    # 把查询出来的员工都关联到ID为8的地区去
    # d = DeptModel.objects.get(pk=8)
    # for emp in emps:
    #     d.employee_set.add(emp)
    # 查询ID为8下面的子部门
    x = Employee.objects.filter(dept_id=8)
    for i in x:
        print(i)
    #     创建一个新的用户，并且让用户关联到ID为7
    # de = Employee.objects.create(name="maqi", emp=EmpChoices.PM, \
    # last=6000, j_last=600.2, sex=SexChoices.O, b_lz=False)
    # de.dept_id = 7
    # de.save()
    # print(de)
    print('----------------')
    des = Employee.objects.filter(dept_id=7)
    for i in des:
        print(i)
    print('----------给用户添加省份号----------')
    # emps = Employee.objects.get(id=7)
    # num = IdCard.objects.create(number='111111111111111111')
    # emps.id_cord_id = num.id
    # emps.save()
    x = Employee.objects.filter(id_cord_id=1)
    for i in x:
        print(i)
    print('---------------')
    # IdCard.objects.filter(dept_id=7)
    # 多对多的关联关系表中的操作
    # w1 = RoleModel.objects.create(name='局长')
    # w2 = RoleModel.objects.create(name='副局长')
    # w3 = RoleModel.objects.create(name='股长')
    # 正向关联属性
    # e1 = Employee.objects.get(pk=8)
    # e1.rules.add(w1, w2, w3)
    # e1.save()
    # 反向关联 ID10给他添加仓库管理员和员工
    # r1 = RoleModel.objects.create(name='仓库管理员')
    # r2 = RoleModel.objects.create(name='员工')
    # e1 = Employee.objects.get(pk=10)
    # r1.role_list.add(e1)
    # r2.role_list.add(e1)
    # 复杂的查询操作
    # 1.查询工资等于9000,员工的姓名以及所属的部门名称
    print('----查询工资等于9000,员工的姓名以及所属的部门名称------')
    x = Employee.objects.filter(last=9000).values('name', 'last', 'dept__name')
    for i in x:
        print(i)
    print('--------查询身份证号是:111111111111111111.的员工的姓名，以及员工所属的部门---------')
    # 2.查询身份证号是:111111111111111111.的员工的姓名，以及员工所属的部门
    x1 = Employee.objects.filter(id_cord__number='111111111111111111').values('name', 'dept__name', 'dept_id')
    for i in x1:
        print(i)
    # 3.查询，每个部门名字，地址以及该部门下面的员工个数
    print('--查询，每个部门名字，地址以及该部门下面的员工个数--')
    x2 = DeptModel.objects.values('name', 'adders').annotate(c=Count('dept_list__name'))
    for i in x2:
        print(i)
    # 4.查询拥有角色的数量超过1 的员工姓名以及他所拥有的角色数量
    print('--查询拥有角色的数量超过1 的员工姓名以及他所拥有的角色数量--')
    x3 = Employee.objects.all().annotate(c=Count('rules__name')).filter(c__gt=1).values('name', 'c')
    for i in x3:
        print(i)
    # 5.查询每个部门的名字以及他里面的员工数量，并且按照员工数量的个数进行降须排序。
    print('--查询每个部门的名字以及他里面的员工数量，并且按照员工数量的个数进行降须排序--')
    x4 = DeptModel.objects.all().annotate(c=Count('dept_list__name')).order_by('-c').values('name', 'c')
    for i in x4:
        print(i)
    return HttpResponse('test01_ddd')
